home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-09-10 | 106.2 KB | 3,608 lines |
- Linux SCSI HOWTO
- Drew Eckhardt, drew@cs.colorado.edu
- v2.15, 20 March 1995
-
- This HOWTO covers the Linux SCSI subsystem, as implemented in Linux
- kernel revision 1.1.74 and newer alpha code. Earlier revisions of the
- SCSI code are unsupported, and may differ significantly in terms of
- the drivers implemented, performance, and options available.
-
- 1. Introduction
-
- 1.1. License
-
- Noncommercial redistributions of a verbatim copy in any medium
- physical or electronic are permitted without express permission of the
- author. Translations are similarly permitted without express
- permission if they includes a notice on who translated it.
-
- Commercial redistribution is allowed and encouraged, provided that the
- author is notified of any such distributions and given opportunity to
- to provide a more up-to-date version.
-
- Short quotes may be used without prior consent by the author.
- Derivative work and partial distributions of the SCSI-HOWTO must
- include either a verbatim copy of this file or make a verbatim copy of
- this file available. If the latter is the case, a pointer to the
- verbatim copy must be stated at a clearly visible place.
-
- In short, we wish to promote dissemination of this information through
- as many channels as possible. However, we do wish to retain copyright
- on the HOWTO documents, to be notified of any plans to redistribute
- the HOWTOs to insure that outdated versions don't spread too far, and
- for ALL the information provided in the HOWTOS to be disseminated. If
- you have questions on the Linux documentation project, please contact
- Matt Welsh, the Linux HOWTO coordinator, at mdw@sunsite.unc.edu.
- Questions regarding this document itself should be addressed to Drew
- Eckhardt, drew@Colorado.EDU.
-
-
- 1.2. Important Note
-
- IMPORTANT:
-
- BUG REPORTS WHICH FAIL TO FOLLOW THE PROCEDURE OUTLINED IN SECTION 2
- WILL BE IGNORED.
-
- For additional information, you may wish to join the SCSI channel of
- the Linux activists list - mail to linux-activists-
- request@joker.cs.hut.fi. with the line
-
-
- X-Mn-Admin: join SCSI
-
-
-
- in the header, as well as the Linux SCSI list by mailing
- majordomo@vger.rutgers.edu with the line
-
-
- subscribe linux-scsi
-
-
-
- in the text.
-
-
- I'm aware that this document isn't the most user-friendly, and that
- there may be inaccuracies and oversights. If you have constructive
- comments on how to rectify the situation you're free to mail me about
- it.
-
-
-
- 2. Common Problems
-
- This section lists some of the common problems that people have. If
- there is not anything here that answers your questions, you should
- also consult the sections for your host adapter and the devices in
- that are giving you problems.
-
-
- 2.1. General Flakiness
-
- If you experience random errors, the most likely causes are cabling
- and termination problems.
-
- Some products, such as those built arround the newer NCR chips,
- feature digital filtering and active signal negation, and aren't very
- sensitive to cabling problems.
-
- Others, such as the Adaptec 154xC, 154xCF, and 274x, are extremely
- sensitive and may fail with cables that work with other systems.
-
- I reiterate: some host adapters are extremely sensitive to cabling and
- termination problems and therefore, cabling and termination should be
- the first things checked when there are problems.
-
- To minimize your problems, you should use cables which
-
-
- 1. Claim SCSI-II compliance
-
- 2. Have a characteristic impedance of 132 ohms
-
- 3. All come from the same source to avoid impedance mismatches
-
- 4. Come from a reputable vendor such as Amphenol
-
- Termination power should be provided by all devices on the SCSI bus,
- through a diode to prevent current backflow, so that sufficient power
- is available at the ends of the cable where it is needed. To prevent
- damage if the bus is shorted, TERMPWR should be driven through a fuse
- or other current limiting device.
-
- If multiple devices, external cables, or FAST SCSI 2 are used, active
- or forced perfect termination should be used on both ends of the SCSI
- bus.
-
- See the comp.periphs.scsi FAQ
- <ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi> for more information about
- active termination.
-
-
- 2.2. The kernel command line
-
- Other parts of the documentation refer to a ``kernel command line''.
-
- The kernel command line is a set of options you may specify from
- either the LILO: prompt after an image name, or in the append field in
- your LILO configuration file (LILO .14 and newer use /etc/lilo.conf,
- older versions use /etc/lilo/config).
-
- Boot your system with LILO, and hit one of the alt, control, or shift
- keys when it first comes up to get a prompt. LILO should respond with
-
-
-
- boot:
-
-
-
-
- At this prompt, you can select a kernel image to boot, or list them
- with ``?''. Ie
-
-
-
- boot: ?
-
- ramdisk floppy harddisk
-
-
-
-
- To boot that kernel with the command line options you have selected,
- simply enter the name followed by a white space delimited list of
- options, terminating with a return.
-
- Options take the form of
-
-
- variable=valuelist
-
-
-
- Where valuelist may be a single value or comma delimited list of
- values with no whitespace. With the exception of root device,
- individual values are numbers, and may be specified in either decimal
- or hexadecimal.
-
- Ie, to boot linux with an Adaptec 1520 clone not recognized at bootup,
- you might type
-
-
-
- boot: floppy aha152x=0x340,11,7,1
-
-
-
-
- If you don't care to type all of this at boot time, it is also
- possible to use the LILO configuration file ``append'' option with
- LILO .13 and newer.
-
- Ie,
-
-
- append="aha152x=0x340,11,7,1"
-
-
-
-
-
- 2.3. A SCSI device shows up at all possible IDs
-
- If this is the case, you have strapped the device at the same address
- as the controller (typically 7, although some boards use other
- addresses, with 6 being used by some Future Domain boards).
- Please change the jumper settings.
-
-
- 2.4. A SCSI device shows up at all possible LUNs
-
- The device has buggy firmware.
-
- As an interim solution, you should try using the kernel command line
- option
-
-
-
- max_scsi_luns=1
-
-
-
-
- If that works, there is a list of buggy devices in the kernel sources
- in drivers/scsi/scsi.c in the variable blacklist. Add your device to
- this list and mail the patch to Linus.
-
-
- 2.5. You get sense errors when you know the devices are error free
-
- Sometimes this is caused by bad cables or impropper termination.
-
- See ``'': General Flakiness
-
-
- 2.6. A kernel configured with networking does not work.
-
- The auto-probe routines for many of the network drivers are not
- passive, and will interfere with operation with some of the SCSI
- drivers.
-
-
- 2.7. Device detected, but unable to access.
-
- A SCSI device is detected by the kernel, but you are unable to access
- it - ie mkfs /dev/sdc, tar xvf /dev/rst2, etc fails.
-
- You don't have a special file in /dev for the device.
-
- Unix devices are identified as either block or character (block
- devices go through the buffer cache, character devices do not)
- devices, a major number (ie which driver is used - block major 8
- corresponds to SCSI disks) and a minor number (ie which unit is being
- accessed through a given driver - ie character major 4, minor 0 is the
- first virtual console, minor 1 the next, etc). However, accessing
- devices through this separate namespace would break the unix/Linux
- metaphor of ``everything is a file,'' so character and block device
- special files are created under /dev. This lets you access the raw
- third SCSI disk device as /dev/sdc, the first serial port as
- /dev/ttyS0, etc.
-
- The preferred method for creating a file is using the MAKEDEV script:
-
-
-
- cd /dev
-
-
-
-
- and run MAKEDEV (as root) for the devices you want to create - ie
-
- wildcards ``should'' work - ie
-
-
-
-
-
-
-
- ``should'' create entries for all SCSI disk devices (doing this should
- create /dev/sda through /dev/sdp, with fifteen partition entries for
- each)
-
-
-
-
-
-
-
- ``should'' create entries for /dev/sdc and all fifteen permissible
- partitions on /dev/sdc, etc.
-
- I say ``should'' because this is the standard unix behavior - the
- MAKEDEV script in your installation may not conform to this behavior,
- or may have restricted the number of devices it will create.
-
- If MAKEDEV won't do the right magic for you, you'll have to create the
- device entries by hand with the mknod command.
-
- The block/character type, major, and minor numbers are specified for
- the various SCSI devices in Subsection 3: Device Files in the
- appropriate section.
-
- Take those numbers, and use (as root)
-
-
-
- mknod /dev/device b|c major minor
-
-
-
-
- ie -
-
-
-
- mknod /dev/sdc b 8 32
- mknod /dev/rst0 c 9 0
-
-
-
-
-
- 2.8. SCSI System Lockups
-
- This could be one of a number of things. Also see the section for
- your specific host adapter for possible further solutions.
-
- There are cases where the lockups seem to occur when multiple devices
- are in use at the same time. In this case, you can try contacting the
- manufacturer of the devices and see if firmware upgrades are available
- which would correct the problem. If possible, try a different scsi
- cable, or try on another system. This can also be caused by bad
- blocks on disks, or by bad handling of DMA by the motherboard (for
- host adapters that do DMA). There are probably many other possible
- conditions that could lead to this type of event.
-
- Sometimes these problems occur when there are multiple devices in use
- on the bus at the same time. In this case, if your host adapter
- driver supports more than one outstanding command on the bus at one
- time, try reducing this to 1 and see if this helps. If you have tape
- drives or slow cdrom drives on the bus, this might not be a practical
- solution.
-
-
- 2.9. Configuring and building the kernel
-
- Unused SCSI drivers eat up valuable memory, aggravating memory
- shortage problems on small systems because kernel memory is unpagable.
-
- So, you will want to build a kernel tuned for your system, with only
- the drivers you need installed.
-
- cd to /usr/src/linux
-
- If you are using a root device other than the current one, or
- something other than 80x25 VGA, and you are writing a boot floppy, you
- should edit the makefile, and make sure the
-
-
- ROOT_DEV =
-
-
-
- and
-
-
- SVGA_MODE =
-
-
-
- lines are the way you want them.
-
- If you've installed any patches, you may wish to guarantee that all
- files are rebuilt. If this is the case, you should type
-
-
-
- make mrproper
-
-
-
-
- Regardless of whether you ran make mrproper, type
-
-
-
- make config
-
-
-
-
- and answer the configuration questions. Then run
-
-
-
- make depend
-
-
-
-
- and finally
-
- make
-
-
-
-
- Once the build completes, you may wish to update the lilo
- configuration, or write a boot floppy. A boot floppy may be made by
- running
-
-
-
- make zdisk
-
-
-
-
-
- 2.10. LUNS other than 0 don't work
-
- This is often a problem with SCSI-> MFM, RLL, ESDI, SMD, and similar
- bridge boards.
-
- At some point, we came to the conclusion that many SCSI-I devices were
- extremely broken, and added the following code
-
-
- ______________________________________________________________________
- /* Some scsi-1 peripherals do not handle lun != 0.
- I am assuming that scsi-2 peripherals do better */
- if((scsi_result[2] & 0x07) == 1 &&
- (scsi_result[3] & 0x0f) == 0) break;
- ______________________________________________________________________
-
-
-
- to scan_scsis() in drivers/scsi/scsi.c. If you delete this code, your
- old devices should be detected correctly if you have not used the
- max_scsi_luns kernel command line option, or the NO_MULTI_LUN compile
- time define.
-
-
-
- 3. Reporting Bugs
-
- The Linux SCSI developers don't necessarily maintain old revisions of
- the code due to space constraints. So, if you are not running the
- latest publically released Linux kernel (note that many of the Linux
- distributions, such as MCC, SLS, Yggdrasil, etc. often lag one or even
- twenty patches behind this) chances are we will be unable to solve
- your problem. So, before reporting a bug, please check to see if it
- exists with the latest publically available kernel.
-
- If after upgrading, and reading this document thoroughly, you still
- believe that you have a bug, please mail a bug report to the SCSI
- channel of the mailing list where it will be seen by many of the
- people who've contributed to the Linux SCSI drivers.
-
- In your bug report, please provide as much information as possible
- regarding your hardware configuration, the exact text of all of the
- messages that Linux prints when it boots, when the error condition
- occurs, and where in the source code the error is. Use the procedures
- outlined in Section 2.1 : Capturing messages and Section 2.2 :
- Locating the source of a panic().
-
- Failure to provide the maximum possible amount of information may
- result in misdiagnosis of your problem, or developers deciding that
- there are other more interesting problems to fix.
-
- The bottom line is that if we can't reproduce your bug, and you can't
- point at us what's broken, it won't get fixed.
-
-
- 3.1. Capturing messages
-
- If you are not running a kernel message logging system :
-
- Insure that the /proc filesystem is mounted.
-
-
-
- grep proc /etc/mtab
-
-
-
-
- If the /proc filesystem is not mounted, mount it
-
-
-
- mkdir /proc
- chmod 755 /proc
- mount -t proc /proc /proc
-
-
-
-
- Copy the kernel revision and messages into a log file
-
-
-
- cat /proc/version >/tmp/log
- cat /proc/kmsg >>/tmp/log
-
-
-
-
- Type Ctrl-C after a second or two.
-
- If you are running some logger, you'll have to poke through the
- appropriate log files (/etc/syslog.conf should be of some use in
- locating them), or use dmesg.
-
- If Linux is not yet bootstrapped, format a floppy diskette under DOS.
- Note that if you have a distribution which mounts the root diskette
- off of floppy rather than RAM drive, you'll have to format a diskette
- readable in the drive not being used to mount root or use their
- ramdisk boot option.
-
- Boot Linux off your distribution boot floppy, preferably in single
- user mode using a RAM disk as root.
-
-
-
- mkdir /tmp/dos
-
-
-
-
- Insert the diskette in a drive not being used to mount root, and mount
- it. Ie
-
-
- mount -t msdos /dev/fd0 /tmp/dos
-
-
-
-
- or
-
-
-
- mount -t msdos /dev/fd1 /tmp/dos
-
-
-
-
- Copy your log to it
-
-
-
- cp /tmp/log /tmp/dos/log
-
-
-
-
- Unmount the DOS floppy
-
-
-
- umount /tmp/dos
-
-
-
-
- And shutdown Linux
-
-
-
- shutdown
-
-
-
-
- Reboot into DOS, and using your favorite communications software
- include the log file in your trouble mail.
-
-
- 3.2. Locating the source of a panic()
-
- Like other unices, when a fatal error is encountered, Linux calls the
- kernel panic() function. Unlike other unices, Linux doesn't dump core
- to the swap or dump device and reboot automatically. Instead, a
- useful summary of state information is printed for the user to
- manually copy down. Ie :
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Unable to handle kernel NULL pointer dereference at virtual address c0000004
- current->tss,cr3 = 00101000, %cr3 = 00101000
- *pde = 00102027
- *pte = 00000027
- Oops: 0000
- EIP: 0010:0019c905
- EFLAGS: 00010002
- eax: 0000000a ebx: 001cd0e8 ecx: 00000006 edx: 000003d5
- esi: 001cd0a8 edi: 00000000 ebp: 00000000 esp: 001a18c0
- ds: 0018 es: 0018 fs: 002b gs: 002b ss: 0018
- Process swapper (pid: 0, process nr: 0, stackpage=001a09c8)
- Stack: 0019c5c6 00000000 0019c5b2 00000000 0019c5a5 001cd0a8 00000002 00000000
- 001cd0e8 001cd0a8 00000000 001cdb38 001cdb00 00000000 001ce284 0019d001
- 001cd004 0000e800 fbfff000 0019d051 001cd0a8 00000000 001a29f4 00800000
- Call Trace: 0019c5c6 0019c5b2 0018c5a5 0019d001 0019d051 00111508 00111502
- 0011e800 0011154d 00110f63 0010e2b3 0010ef55 0010ddb7
- Code: 8b 57 04 52 68 d2 c5 19 00 e8 cd a0 f7 ff 83 c4 20 8b 4f 04
- Aiee, killing interrupt handler
- kfree of non-kmalloced memory: 001a29c0, next= 00000000, order=0
- task[0] (swapper) killed: unable to recover
- Kernel panic: Trying to free up swapper memory space
- In swapper task - not syncing
-
-
-
-
- Take the hexidecimal number on the EIP: line, in this case 19c905, and
- search through /usr/src/linux/zSystem.map for the highest number not
- larger than that address. Ie,
-
-
-
- 0019a000 T _fix_pointers
- 0019c700 t _intr_scsi
- 0019d000 t _NCR53c7x0_intr
-
-
-
-
- That tells you what function its in. Recompile the source file which
- defines that function file with debugging enabled, or the whole kernel
- if you prefer by editing /usr/src/linux/Makefile and adding a ``-g''
- to the CFLAGS definition.
-
-
-
- ##standard CFLAGS
- #
-
-
-
-
- Ie,
-
-
-
- CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-
-
-
-
- becomes
-
-
-
-
- CFLAGS = -g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe
-
-
-
-
- Rebuild the kernel, incrementally or by doing a
-
-
-
- make clean
- make
-
-
-
-
- Make the kernel bootable by creating an entry in your /etc/lilo.conf
- for it
-
-
-
- image = /usr/src/linux/zImage
- label = experimental
-
-
-
-
- and re-running LILO as root, or by creating a boot floppy
-
-
-
- make zImage
-
-
-
-
- Reboot and record the new EIP for the error.
-
- If you have script installed, you may want to start it, as it will log
- your debugging session to the typescript file.
-
- Now, run
-
-
-
- gdb /usr/src/linux/tools/zSystem
-
-
-
-
- and enter
-
-
-
- info line *<your EIP>
-
-
-
-
- Ie,
-
-
- info line *0x19c905
-
-
-
-
- To which GDB will respond something like
-
-
-
- (gdb) info line *0x19c905
- Line 2855 of ``53c7,8xx.c'' starts at address 0x19c905 <intr_scsi+641>and ends
- at 0x19c913 <intr_scsi+655>.
-
-
-
-
- Record this information. Then, enter list < line number>
-
- Ie,
-
-
- ______________________________________________________________________
- (gdb) list 2855
- 2850 /* printk("scsi%d : target %d lun %d unexpected disconnect\n",
- 2851 host->host_no, cmd->cmd->target, cmd->cmd->lun); */
- 2852 printk("host : 0x%x\n", (unsigned) host);
- 2853 printk("host->host_no : %d\n", host->host_no);
- 2854 printk("cmd : 0x%x\n", (unsigned) cmd);
- 2855 printk("cmd->cmd : 0x%x\n", (unsigned) cmd->cmd);
- 2856 printk("cmd->cmd->target : %d\n", cmd->cmd->target);
- 2857 if (cmd) {
- 2858 abnormal_finished(cmd, DID_ERROR << 16);
- 2859 }
- 2860 hostdata->dsp = hostdata->script + hostdata->E_schedule /
- 2861 sizeof(long);
- 2862 hostdata->dsp_changed = 1;
- 2863 /* SCSI PARITY error */
- 2864 }
- 2865
- 2866 if (sstat0_sist0 & SSTAT0_PAR) {
- 2867 fatal = 1;
- 2868 if (cmd && cmd->cmd) {
- 2869 printk("scsi%d : target %d lun %d parity error.\n",
- ______________________________________________________________________
-
-
-
- Obviously, quit will take you out of GDB.
-
- Record this information too, as it will provide a context incase the
- developers' kernels differ from yours.
-
-
- 4. Hosts
-
-
- This section gives specific information about the various host
- adapters that are supported in some way or another under linux.
-
-
- 4.1. Supported and Unsupported Hardware
-
- Drivers in the distribution kernel :
-
- Adaptec 152x, Adaptec 154x (including clones from Bustek and DTC 329x
- boards), Adaptec 174x, Adaptec 274x/284x/2940, EATA-DMA protocol
- compilant boards (all DPT PMXXXXX/XX and SKXXXXX/XX except the PM2001,
- some boards from NEC and ATT), Future Domain 850, 885, 950, and other
- boards in that series (but not the 840, 841, 880, and 881 boards
- unless you make the appropriate patch), Future Domain 16x0 with
- TMC-1800, TMC-18C30, or TMC-18C50 chips, NCR53c8xx,PAS16 SCSI ports,
- Seagate ST0x, Trantor T128/T130/T228 boards, Ultrastor 14F, 24F, and
- 34F, and Western Digital 7000.
-
- Alpha drivers: Richoh GSI-8
-
- Many of the ALPHA drivers are available via anonymous FTP from
- <ftp://tsx-11.mit.edu:/pub/linux/ALPHA/scsi>
-
- Drivers that are being developed, but aren't publically available yet,
- and modifications needed to make existing drivers compatable with
- other boards: DPT PM2001
-
- Announcements WILL be made when drivers are available for public alpha
- testing. Until then, please don't use up the developers' valuable
- time with mail asking for release dates, etc.
-
-
- o NCR53c8x0/7x0
-
- o A NCR53c8xx driver has been developed, and with modifications
- ranging from minor to severe should support these chips
-
- o NCR53c720 - detection changes, initializaion changes, modification
- of the assembler to use the 720's register mapping
-
- o NCR53c710 - detection changes, initialization changes, modification
- of assembler, modification of the NCR code to use fatal interrupts
- or GPIO generated non fatal interrupts for command completion.
-
- o NCR53c700, NCR53c700-66 - detection changes, initialization
- changes, modification of NCR code to not use DSA, modification of
- Linux code to handle context switches.
-
- o NCR53c9x family
-
- o Qlogic
-
- SCSI hosts that will not work :
-
- o All parallel-> SCSI adapters
-
- o Rancho SCSI boards
-
- o and Grass Roots SCSI boards.
-
- SCSI hosts that will NEVER work:
-
-
- o Non Adaptec compatable DTC boards (including the 3270 and 3280).
-
- Aquiring programming information requires a non-disclosure
- agreement with DTC. This means that it would be impossible to
- distribute a Linux driver if one were written, since complying with
- the NDA would mean distributing no source, in violation of the GPL,
- and complying with the GPL would mean distributing source, in
- violation of the NDA.
-
- If you want to run Linux on an unsupported piece of hardware, your
- options are to either write a driver yourself (Eric Youngdale and I
- are usually willing to answer technical questions concerning the Linux
- SCSI drivers) or to commision a driver.
-
-
-
-
-
- 4.1.1. Multiple host adapters
-
- With some host adapters (see ``'': Buyers' Guide : Feature
- Comparison), you can use multiple host adapters of the same type in
- the same system. With multiple adapters of the same type in the same
- system, generally the one at the lowest address will be scsi0, the one
- at the next address scsi1, etc.
-
- In all cases, it is possible to use multiple host adapters of
- different types, provided that none of their addresses conflict. SCSI
- controllers are scanned in the order specified in the
- builtin_scsi_hosts[ ]array in drivers/scsi/hosts.c, with the order
- currently being
-
-
- 1. Ultrastor
-
- 2. Adaptec 151x/152x
-
- 3. Buslogic
-
- 4. Adaptec 154x
-
- 5. Adaptec 174x
-
- 6. Future Domain 16x0
-
- 7. Always IN2000
-
- 8. Generic NCR5380
-
- 9. PAS16
-
- 10.
- Seagate
-
- 11.
- Trantor T128/T130
-
- 12.
- NCR53c8xx
-
- 13.
- EATA-DMA
-
- 14.
- WD7000
-
- 15.
- debugging driver.
-
- In most cases (ie, you aren't trying to use both Buslogic and Adaptec
- drivers), this can be changed to suit your needs (ie, keeping the same
- devices when new SCSI devices are added to the system on a new
- controller) by moving the individual entries.
-
-
- 4.2. Common Problems
-
-
- 4.2.1. SCSI timeouts
-
- Make sure interrupts are enabled correctly, and there are no IRQ, DMA,
- or address conflicts with other boards.
-
-
- 4.2.2. Failure of autoprobe routines on boards that rely on
-
- BIOS for autoprobe.
-
- If your SCSI adapter is one of the following :
-
-
- o Adaptec 152x
-
- o Adaptec 151x
-
- o Adaptec AIC-6260
-
- o Adaptec AIC-6360
-
- o Future Domain 1680
-
- o Future Domain TMC-950
-
- o Future Domain TMC-8xx
-
- o Trantor T128
-
- o Trantor T128F
-
- o Trantor T228F
-
- o Seagate ST01
-
- o Seagate ST02
-
- o Western Digital 7000
-
- and it is not detected on bootup, ie you get a
-
-
-
- scsi : 0 hosts
-
-
-
-
- message or a
-
-
-
- scsi%d : type
-
-
-
-
- message is not printed for each supported SCSI adapter installed in
- the system, you may have a problem with the autoprobe routine not
- knowing about your board.
-
- Autodetection will fail for drivers using the BIOS for autodetection
- if the BIOS is disabled. Double check that your BIOS is enabled, and
- not conflicting with any other peripherial BIOSes.
-
- Autodetection will also fail if the board's ``signature'' and/or BIOS
- address don't match known ones.
-
- If the BIOS is installed, please use DOS and DEBUG to find a signature
- that will detect your board -
-
-
- Ie, if your board lives at 0xc8000, under DOS do
-
-
-
- debug
- d c800:0
- q
-
-
-
-
- and send a message to the SCSI channel of the mailing list with the
- ASCII message, with the length and offset from the base address (ie,
- 0xc8000). Note that the exact text is required, and you should
- provide both the hex and ASCII portions of the text.
-
- If no BIOS is installed, and you are using an Adaptec 152x, Trantor
- T128, or Seagate driver, you can use command line or compile time
- overrides to force detection.
-
- Please consult the appropriate subsection for your SCSI board as well
- as ``''.
-
-
- 4.2.3. Failure of boards using memory mapped I/O
-
- (This include the Trantor T128 and Seagate boards, but not the
- Adaptec, Generic NCR5380, PAS16, and Ultrastor drivers)
-
- This is often caused when the memory mapped I/O ports are incorrectly
- cached. You should have the board's address space marked as
- uncachable in the XCMOS settings.
-
- If this is not possible, you will have to disable cache entirely.
-
- If you have manually specified the address of the board, remember that
- Linux needs the actual address of the board, and not the 16 byte
- segment the documentation may refer to. Ie, 0xc8000 would be correct,
- 0xc800 would not work and could cause memory corruption.
-
-
- 4.2.4. ``kernel panic : cannot mount root device'' when booting
-
- an ALPHA driver boot floppy
-
- You'll need to edit the binary image of the kernel (before or after
- writing it out to disk), and modify a few two byte fields (little
- endian) to gurantee that it will work on your system.
-
-
- 1. default swap device at offset 502, this should be set to 0x00 0x00
-
- 2. ram disk size at offset 504, this should be set to the size of the
- boot floppy in K - ie, 5.25" = 1200, 3.5" = 1440.
-
- This means the bytes are
-
-
-
- 3.5" : 0xA0 0x05
- 5.25" : 0xB0 0x04
-
-
-
-
-
- 3. root device offset at 508, this should be 0x00 0x00, ie the boot
- device.
-
- dd or rawrite the file to a disk. Insert the disk in the first floppy
- drive, wait until it prompts you to insert the root disk, and insert
- the root floppy from your distribution.
-
-
- 4.2.5. Installing a device driver not included with the distribution
- kernel
-
- You need to start with the version of the kernel used by the driver
- author. This revision may be alluded to in the documentation included
- with the driver.
-
- Various recent kernel revisions can be found at
- <ftp://nic.funet.fi/pub/OS/Linux/PEOPLE/Linus>
-
- as linux-version.tar.gz
-
- They are also mirrored at tsx-11.mit.edu and various other sites.
-
- cd to /usr/src.
-
- Remove your old Linux sources, if you want to keep a backup copy of
- them
-
-
-
- mv linux linux-old
-
-
-
-
- Untar the archive
-
-
-
- gunzip <linux-0.99.12.tar.gz | tar xvfp -
-
-
-
-
- Apply the patches. The patches will be relative to some directory in
- the filesystem. By examining the output file lines in the patch file
- (grep for ^---), you can tell where this is - ie patches with these
- lines
-
-
-
- --- ./kernel/blk_drv/scsi/Makefile
-
- --- ./config.in Wed Sep 1 16:19:33 1993
-
-
-
-
- would have the files relative to /usr/src/linux.
-
- Untar the driver sources at an appropriate place - you can type
-
-
-
- tar tfv patches.tar
-
-
- to get a listing, and move files as necessary (The SCSI driver files
- should live in /usr/src/linux/kernel/drivers/scsi).
-
- Either cd to the directory they are relative to and type
-
-
-
- patch -p0 <patch_file
-
-
-
-
- or tell patch to strip off leading path components. Ie, if the files
- started with
-
-
-
- --- linux-new/kernel/blk_drv/scsi/Makefile
-
-
-
-
- and you wanted to apply them while in /usr/src/linux, you could cd to
- /usr/src/linux and type
-
-
-
- patch -p1 < patches
-
-
-
-
- to strip off the ``linux-new'' component.
-
- After you have applied the patches, look for any patch rejects, which
- will be the name of the rejected file with a # suffix appended.
-
-
-
- find /usr/src/linux/ -name ``*#'' -print
-
-
-
-
- If any of these exist, look at them. In some cases, the differences
- will be in RCS identifiers and will be harmless, in other cases,
- you'll have to manually apply important parts. Documentation on diffs
- files and patch is beyond the scope of this document.
-
- See also ``'': Configuring and building the kernel
-
-
- 4.2.6. Installing a driver that has no patches
-
-
- In some cases, a driver author may not offer patches with the .c and
- .h files which comprise his driver, or the patches may be against an
- older revision of the kernel and not go in cleanly.
-
-
- 1. Copy the .c and .h files into /usr/src/linux/drivers/scsi
-
- 2. Add the configuration option
-
- Edit /usr/src/linux/config.in, and add a line in the
-
- * SCSI low-level drivers
-
-
-
-
-
- section, add a boolean configuration variable for your driver. Ie,
-
-
-
- bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y
-
-
-
-
-
- 3. Add the makefile entries
-
- Edit /usr/src/linux/drivers/scsi/Makefile, and add an entry like
-
-
- ___________________________________________________________________
- ifdef CONFIG_SCSI_IN2000
- SCSI_OBS := $(SCSI_OBJS) in2000.o
- SCSI_SRCS := $(SCSI_SRCS) in2000.c
- endif
- ___________________________________________________________________
-
-
-
- before the
-
-
- ______________________________________________________________________
- scsi.a: $(SCSI_OBJS)
- ______________________________________________________________________
-
-
-
- line in the makefile, where the .c file is the .c file you copied in,
- and the .o file is the basename of the .c file with a .o suffixed.
-
- 4. Add the entry points
-
- Edit /usr/src/linux/drivers/scsi/hosts.c, and add a #include for
- the header file, conditional on the CONFIG_SCSI preprocessor define
- you added to the configuration file. Ie, after
-
-
- ___________________________________________________________________
- #ifdef CONFIG_SCSI_GENERIC_NCR5380
- #include ``g_NCR5380.h''
- #endif
- ___________________________________________________________________
-
-
-
- you might add
-
-
- ______________________________________________________________________
- #ifdef CONFIG_SCSI_IN2000
- #include ``in2000.h''
- #endif
- ______________________________________________________________________
-
- You will also need to add the Scsi_Host_Template entry into the
- scsi_hosts[ ] array. Take a look into the .h file, and you should
- find a # define that looks something like this :
-
-
- ______________________________________________________________________
- #define IN2000 {``Always IN2000'', in2000_detect, \
- in2000_info, in2000_command, \
- in2000_queuecommand, \
- in2000_abort, \
- in2000_reset, \
- NULL, \
- in2000_biosparam, \
- 1, 7, IN2000_SG, 1, 0, 0}
- ______________________________________________________________________
-
-
-
- the name of the preprocessor define, and add it into the scsi_hosts[ ]
- array, conditional on definition of the preprocessor symbol you used
- in the configuration file.
-
- Ie, after
-
-
- ______________________________________________________________________
- #ifdef CONFIG_SCSI_GENERIC_NCR5380
- GENERIC_NCR5380,
- #endif
- ______________________________________________________________________
-
-
-
- you might add
-
-
- ______________________________________________________________________
- #ifdef CONFIG_SCSI_IN2000
- IN2000,
- #endif
- ______________________________________________________________________
-
-
-
- See also ``'': Configuring and building the kernel
-
-
- 4.3. AIC 6260/6360 based products (Standard) Adaptec 152x, 151x,
- Sound Blaster 16 SCSI, SCSI Pro, Gigabyte, and other
-
-
-
- 4.3.1. Supported Configurations :
-
-
- BIOS addresses:
- 0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000, 0xe0 000,
- 0xe4000.
-
-
- Ports:
- 0x140, 0x340
-
-
- IRQs:
- 9, 10, 11, 12
- DMA:
- is not used.
-
- IO:
- port mapped
-
-
- Autoprobe:
- Works with many boards with an installed BIOS. All other board
- s, including the Adaptec 1510, and Sound Blaster16 SCSI must use
- a kernel comma nd line or compile time override.
-
-
- Autoprobe Override:
- None
-
- Compile time:
- Define PORTBASE, IRQ, SCSI_ID, RECONNECT as appropriate, see
- Defines
-
-
- kernel command line
- aha152x=< PORTBASE> ,< IRQ> ,< SCSI-ID> , < RECONNECT>
- Usually, SCSI-ID will be 7 and RECONNECT non-zero. To force d
- etection at 0x340, IRQ 11, at SCSI-ID 7, allowing
- disconnect/reconnect, you wou ld use the following command line
- option :
-
-
-
- aha152x=0x340,11,7,1
-
-
-
-
-
- Antiquity Problems, fix by upgrading:
- The driver fails with VLB boards. There was a timing problem in
- kernels older than revision 1.0.5.
-
-
- Defines:
-
- AUTOCONF:
- use configuration the controller reports (only 152x)
-
- IRQ:
- override interrupt channel (9,10,11 or 12) (default 11)
-
- SCSI_ID:
- override scsiid of AIC-6260 (0-7) (default 7)
-
- RECONNECT:
- override target dis-/reconnection/multiple
-
- outstanding command:
- set to non-zero to enable, zero to disable.
-
- DONT_SNARF:
- Don't register ports (pl12 and below)
-
- SKIP_BIOSTEST:
- Don't test for BIOS signature (AHA-1510 or disabled BIOS)
-
- PORTBASE:
- Force port base. Don't try to probe
- 4.4. Adaptec 154x, AMI FastDisk VLB, Buslogic, DTC 329x (Standard)
-
-
-
- Supported Configurations:
-
- Ports:
- 0x330 and 0x334
-
- IRQs:
- 9, 10, 11, 12, 14, 15
-
- DMA channels:
- 5, 6, 7
-
- IO:
- port mapped, bus master
-
- Autoprobe:
- works with all supported configurations, does not require an
- installed BIOS.
-
-
-
- Autoprobe override:
- none
-
-
- Note:
- No suffix boards, and early 'A' suffix boards do not support
- scatter/gather, and thus don't work. However, they can be made
- to work for some definition of the word works if AHA1542_SCATTER
- is changed to 0 in drivers/scsi/aha1542.h.
-
-
- Note:
- Buslogic makes a series of boards that are software compatible
- with the Adaptec 1542, and these come in ISA, VLB and EISA
- flavors.
-
-
- Antiquity Problems, fix by upgrading:
-
- 1. Linux kernel revisions prior to .99.10 don't support the 'C'
- revision.
-
- 2. Linux kernel revisions prior to .99.14k don't support the 'C'
- revision options for
-
- o BIOS support for the extended mapping for disks > 1G
-
- o BIOS support for > 2 drives
-
- o BIOS support for autoscanning the SCSI bus
-
-
- 3. Linux kernel revisions prior to .99.15e don't support the 'C'
- with the BIOS support for > 2 drives turned on and the BIOS
- support for the extended mapping for disks > 1G turned off.
-
- 4. Linux kernel revisions prior to .99.14u don't support the
- 'CF' revisions of the board.
-
- 5. Linux kernel revisions prior to 1.0.5 have a race condition
- when multiple devices are accessed at the same time.
-
- Common problems:
-
- 1. There are unexpected errors with a 154xC or 154xCF board,
-
- Early examples of the 154xC boards have a high slew rate on
- one of the SCSI signals, which results in signal reflections
- when cables with the wrong impedance are used.
-
- Newer boards aren't much better, and also suffer from extreme
- cabling and termination sensitivity.
-
- See also Common Problems # 2 and # 3 and Section ``'': Common
- Problems, and Section ``'': General Flakiness
-
- 2. There are unexpected errors with a 154xC or 154x with both
- internal and external devices connected.
-
- This is probably a termination problem. In order to use the
- software option to disable host adapter termination, you must
- turn switch 1 off.
-
-
- See also Common Problems # 2 and # 3 and Section ``'': Common
- Problems, and Section ``'': General Flakiness
-
- 3. The SCSI subsystem locks up completely.
-
- There are cases where the lockups seem to occur when multiple
- devices are in use at the same time. In this case, you can
- try contacting the manufacturer of the devices and see if
- firmware upgrades are available which would correct the
- problem. As a last resort, you can go into aha1542.h and
- change AHA1542_MAILBOX to 1. This will effectively limit you
- to one outstanding command on the scsi bus at one time, and
- may help the situation. If you have tape drives or slow
- cdrom drives on the bus, this might not be a practical
- solution.
-
-
- See also Common Problems # 2 and # 3 and Section ``'': Common
- Problems, Section ``'': General Flakiness and Section
- ``'':SCSI Lockups.
-
-
- 4. An ``Interrupt received, but no mail'' message is printed on
- bootup and your SCSI devices are not detected.
-
- Disable the BIOS options to support the extended mapping for
- disks > 1G, support for > 2 drives, and for autoscanning the
- bus. Or, upgrade to Linux .99.14k or newer.
-
- 4.5. Adaptec 174x
-
-
- Supported Configurations:
-
- Slots:
- 1-8
-
- Ports:
- EISA board, not applicable
-
- IRQs:
- 9, 10, 11, 12, 14, 15
-
-
- DMA Channels:
- EISA board, not applicable
-
- IO:
- port mapped, bus master
-
-
- Autoprobe:
- works with all supported configurations
-
-
- Autoprobe override:
- none
-
-
- Note:
- This board has been discontinued by Adaptec.
-
-
- Common Problems:
-
- 1. If the Adaptec 1740 driver prints the message ``aha1740:
- Board detected, but EBCNTRL = % x, so disabled it.'' your
- board was disabled because it was not running in enhanced
- mode. Boards running in standard 1542 mode are not
- supported.
-
-
- 4.6. Adaptec 274x, 284x, 294x (Standard)
-
- Newer revisions may be available at
- <ftp://ftp.cpsc.ucalgary.ca/pub/systems/linux/aha274x/aha274x-pre-
- alpha.tar .gz>
-
- Supported Configurations:
-
- 274x:
-
- EISA Slots:
- 1-12
-
- IRQs:
- ALL
-
- IO:
- port mapped, bus master
-
- 284x:
-
- Ports:
- All
-
- IRQs:
- All
-
- DMA Channels:
- All
-
-
- 294x
- PCI
-
-
- Note:
- BIOS MUST be enabled
-
- Note:
- The B channel on 2742AT boards is ignored.
-
-
-
- 4.7. Always IN2000 (ALPHA)
-
- ALPHA driver available at
- <ftp://tsx-11.mit.edu/pub/linux/ALPHA/SCSI/in2000>. The driver is
- in2000.tar.z, bootable kernel zImage
-
- Port:
- 0x100, 0x110, 0x200, 0x220
-
- IRQs:
- 10, 11, 14, 15
-
- DMA:
- not used
-
- IO:
- port mapped
-
- Autoprobe:
- BIOS not required
-
- Autoprobe override:
- none
-
-
- Common Problems:
-
- 1. There are known problems in systems with IDE drives and with
- swapping.
-
-
- 4.8. EATA: DPT Smartcache, Smartcache Plus, Smartcache III (Standard)
-
-
- Supported boards:
- all, that support the EATA-DMA protocol (no PM2001).
-
- DPT Smartcache:
- PM2011 PM2012A PM2012B
-
- Smartcache III:
- PM2021 PM2022 PM2024 PM2122 PM2124 PM2322
-
- SmartRAID:
- PM3021 PM3222 PM3224 many of those boards are also
- available as SKXXXX versions, which are supported as well.
-
- Supported Configurations:
-
- Slots:
- ALL
-
- Ports:
- ALL
-
- IRQs:
- ALL level & edge triggered
-
- DMA Channels:
- ISA ALL, EISA/PCI not applicable
-
- IO:
- port mapped, bus master
-
- SCSI Channels:
- ALL
-
- Autoprobe:
- works with all supported configurations
-
- Compile time:
- diskgeometry in eata_dma.h for unusual disk geometries which
- came from the usage of the old DPTFMT utility. The latest
- version of the EATA-DMA driver and a Slackware bootdisk
- should be available on: <ftp://ftp.uni-
- mainz.de/pub/Linux/arch/i386/system/EATA/>
-
- Common Problems:
-
- 1. The IDE driver detects the ST-506 interface of the EATA
- board.
-
- a. This will look like similar to one of the following 2
- examples:
-
-
-
- hd.c: ST-506 interface disk with more than 16 heads detected,
- probably due to non-standard sector translation. Giving up.
- (disk % d: cyl=% d, sect=63, head=64)
-
- hdc: probing with STATUS instead of ALTSTATUS
- hdc: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
- hdc: cannot handle disk with 0 physical heads
- hdd: probing with STATUS instead of ALTSTATUS
- hdd: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
- hdd: cannot handle disk with 0 physical heads
-
-
-
-
-
- If the IDE driver gets into trouble because of this, ie.
- you can't access your (real) IDE hardware, change the IO
- Port and/or the IRQ of the EATA board.
-
- b. If the IDE driver finds hardware it can handle ie.
- harddisks with a capacity < =504MB, it will allocate
- the IO Port and IRQ, so that the eata driver can't
- utilize them. In this case also change IO Port and IRQ
- (!= 14,15).
-
-
-
- 2. Some old SK2011 boards have a broken firmware. Please
- contact DPT's customer support for an update.
-
-
- 4.9. p Future Domain 16x0 with TMC-1800, TMC-18C30, TMC-18C50, or
- TMC-36C70 chi
-
-
- Supported Configurations:
-
- BIOSs:
- 2.0, 3.0, 3.2, 3.4, 3.5
-
- BIOS Addresses:
- 0xc8000, 0xca000, 0xce000, 0xde000
-
- Ports:
- 0x140, 0x150, 0x160, 0x170
-
- IRQs:
- 3, 5, 10, 11, 12, 14, 15
-
- DMA:
- not used
-
- IO:
- port mapped
-
- Autoprobe:
- works with all supported configurations, requires installed BIOS
-
- Autoprobe Override:
- none
-
- Antiquity Problems, fix by upgrading:
-
- 1. Old versions do not support the TMC-18C50 chip, and will fail
- with newer boards.
-
- 2. Old versions will not have the most current BIOS signatures
- for autodetection.
-
- 3. Versions prior to the one included in Linux 1.0.9 and 1.1.6
- don't support the new SCSI chip or 3.4 BIOS.
-
-
- 4.10. Generic NCR5380 / T130B
-
-
- Supported and Unsupported Configurations:
-
- Ports:
- all
-
- IRQs:
- all
-
- DMA:
- not used
-
- IO:
- port mapped
-
- Autoprobe:
- none
-
-
- Autoprobe Override:
-
- Compile time:
- Define GENERIC_NCR5380_OVERRIDE to be an array of tupples
- with port, irq, dma, board type - ie
-
-
- _____________________________________________________________
- #define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}}
- _____________________________________________________________
-
-
- for a NCR5380 board at port 330, IRQ 5.
-
-
- ________________________________________________________________
- #define GENERIC_NCR5380_OVERRIDE {{0x350, 5, DMA_NONE, BOARD_NCR53C400}}
- ________________________________________________________________
-
-
-
- for a T130B at port 0x350.
-
- Older versions of the code eliminate the BOARD_* entry.
-
- The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
-
-
- kernel command line:
-
- o ncr5380=port,irq
-
- o ncr5380=port,irq,dma
-
- o ncr53c400=port,irq
-
- 255 may be used for no irq, 254 for irq autoprobe.
-
- Common Problems:
-
- 1. Using the T130B board with the old (pre public release 6)
- generic NCR5380 driver which doesn't support the ncr53c400
- command line option.
-
- The NCR5380 compatable registers are offset eight from the
- base address. So, if your address is 0x350, use
-
-
-
- ncr53480=0x358,254
-
-
-
-
-
- on the kernel command line.
-
- Antiquity problems, fix by upgrading :
-
- 1. The kernel locks up during disk access with T130B or other
- NCR53c400 boards
-
- Pre-public release 6 versions of the Generic NCR5380 driver
- didn't support interrupts on these boards. Upgrade.
-
-
- Notes:
- the generic driver doesn't support DMA yet, and pseudo-DMA isn't
- supported in the generic driver.
-
-
- 4.11. NCR53c8xx (Standard)
-
-
- Supported and Unsupported Configurations:
-
- Base addresses:
- ALL
- IRQs:
- ALL
-
- DMA channels:
- PCI, not applicable
-
- IO:
- port mapped, busmastering
-
- Autoprobe:
- requires PCI BIOS, uses PCI BIOS routines to search for devices
- and read configuration space
-
- The driver uses the pre-programmed values in some registers for
- initialization, so a BIOS must be installed.
-
-
- Antiquity Problems, fix by upgrading:
-
- 1. Older versions of Linux had a problem with swapping
-
- See Section ``'':System Hangs When Swapping
-
- 2. Older versions of Linux didn't recognize '815 and '825
- boards.
-
- Common Problems:
-
- 1. Many people have encountered problems where the chip worked
- fine under DOS, but failed under Linux with a timeout on test
- 1 due to a lost interrupt.
-
- This is often due to a mismatch between the IRQ hardware
- jumper for a slot or mainboard device and the value set in
- the CMOS setup.
-
- It may also be due to PCI INTB, INTC, or INTD being selected
- on a PCI board in a system which only supports PCI INTA.
-
- Finally, PCI should be using level-sensitive rather than edge
- triggered interrupts. Check that your board is jumpered for
- level-sensitive, and if that fails try edge-triggered because
- your system may be broken.
-
- This problem is especially common with Viglen some Viglen
- motherboards, where the mainboard IRQ jumper settings are NOT
- as documented in the manual. I've been told that what claims
- to be IRQ5 is really IRQ9, your mileage will vary.
-
- 2. Lockups occur when using an S3928P, X11, and the NCR chip at
- the same time.
-
- There are hardware bugs in at least some S3928P chip. Don't
- do this.
-
- 3. You get a message on boot up indicating that the I/O mapping
- was disabled because base address 0 bits 0..1 indicated a non
- I/O mapping
-
- This is due to a BIOS bug in some machines which results in
- dword reads of configuration regsisters returning the high
- and low 16 bit words swapped.
-
- 4. Some systems have problems if PCI write posting, or CPU->PCI
- buffering are enabled. If you have problems, disable these
- options.
- 5. Some systems with the NCR SDMS software in an onboard BIOS
- ROM and in the system BIOS are unable to boot DOS. Disabling
- the image in one place should rectify this problem.
-
- 6. Some systems have hideous, broken, BIOS chips. Don't make
- any bug reports until you've made sure you have the newest
- ROM from your vendor.
-
-
- o Intel P90 boards require revision 1.00.04.AX1
-
-
- 4.12. Seagate ST0x/Future Domain TMC-8xx/TMC-9xx
-
-
- Supported and Unsupported Configurations :
-
- Base addresses:
- 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
-
- IRQs:
- 3, 5
-
- DMA:
- not used
-
- IO:
- memory mapped
-
- Autoprobe:
- probes for address only, IRQ is assumed to be 5, requires
- installed BIOS.
-
-
- Autoprobe Override:
-
- Compile time:
- Define OVERRIDE to be the base address, CONTROLLER to FD or
- SEAGATE as appropriate, and IRQ to the IRQ.
-
-
- kernel command line:
- st0x=address,irq or tmc8xx=address,irq (only works for
- .99.13b and newer)
-
-
- Antiquity Problems, fix by upgrading:
-
- 1. . Versions prior to the one in the Linux .99.12 kernel had a
- problem handshaking with some slow devices, where
-
- This is what happens when you write data out to the bus
-
- a. Write byte to data register, data register is asserted to
- bus
-
- b. time_remaining = 12us
-
- c. wait while time_remaining > 0 and REQ is not asserted
-
- d. if time_remaining > 0, assert ACK
-
- e. wait while time remaining > 0 and REQ is asserted
-
- f. deassert ACK
-
- The problem was encountered in slow devices that do the com-
- mand processing as they read the command, where the REQ/ACK
- handshake takes over 12us - REQ didn't go false when the
- driver expected it to, so the driver ended up sending multi-
- ple bytes of data for each REQ pulse.
-
- 2. With Linux .99.12, a bug was introduced when I fixed the
- arbitration code, resulting in failed selections on some
- systems. This was fixed in .99.13.
-
- 4.12.1. Common Problems
-
-
- 4.12.1.1. Command Timeouts
-
- There are command timeouts when Linux attempts to read the partition
- table or do other disk access.
-
- The board ships with the defaults set up for MSDOS, ie interrupts are
- disabled. To jumper the board for interrupts, on the Seagate use
- jumper W3 (ST01) or JP3 (ST02) and short pins F-G to select IRQ 5.
-
-
- 4.12.1.2. Some Devices Don't Work
-
- The driver can't handle some devices, particularly cheap SCSI tapes
- and CDROMs.
-
- The Seagate ties the SCSI bus REQ/ACK handshaking into the PC bus IO
- CHANNEL READY and (optionally) 0WS signals. Unfortunately, it doesn't
- tell you when the watchdog timer runs out, and you have no way of
- knowing for certain that REQ went low, and may end up seeing one REQ
- pulse as multiple REQ pulses.
-
- Dealing with this means using a tight loop to look for REQ to go low,
- with a timeout incase you don't catch the transition due to an
- interrupt, etc. This results in a performance decrease, so it would
- be undesireable to apply this to all SCSI devices. Instead, it is
- selected on a per-device basis with the ``borken'' field for the given
- SCSI device in the scsi_devices array. If you run into problems, you
- should try adding your device to the list of devices for which borken
- is not reset to zero (currently, only the TENEX CDROM drives).
-
-
- 4.12.1.3. Future Domain does not work
-
- A future domain board (specific examples include the 840,841, 880, and
- 881) doesn't work.
-
- A few of the Future domain boards use the Seagate register mapping,
- and have the MSG and CD bits of the status register flipped.
-
- You should edit seagate.h, swapping the definitions for STAT_MSG and
- STAT_CD, and recompile the kernel with CONTROLLER defined to SEAGATE
- and an appropriate IRQ and OVERRIDE specified.
-
-
- 4.12.1.4. HDIO_REQ or HDIO_GETGEO failed
-
- When attempting to fdisk your drive, you get error messages indicating
- that the HDIO_REQ or HDIO_GETGEO ioctl failed, or
-
- You must set heads sectors and cylinders. You can do this from the
- extra functions menu.
-
-
- See Section ``'': Partitioning
-
-
- 4.12.1.5. Fdisk fails
-
- After manually specifying the drive geometry, subsequent attempts to
- read the partition table result in partition boundary not on a
- cylinder boundary, physical and logical boundaries don't match, etc.
- error messages.
-
- See Section ``'': Partitioning
-
-
- 4.12.1.6. Used to work but now it doesn't
-
- Some systems which worked prior to .99.13 fail with newer versions of
- Linux. Older versions of Linux assigned the CONTROL and DATA
- registers in an order different than that outlined in the Seagate
- documentation, which broke on some systems. Newer versions make the
- assignment in the correct way, but this breaks other systems.
-
- The code in seagate.c looks like this now :
-
-
- ______________________________________________________________________
- cli();
- DATA = (unsigned char) ((1 <<target) | (controller_type == SEAGATE ? 0x80 : 0x4
- 0));
- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
- (reselect ? CMD_ATTN : 0);
- sti();
- ______________________________________________________________________
-
-
-
- Changing this to
-
-
- ______________________________________________________________________
- cli();
- CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
- (reselect ? CMD_ATTN : 0);
- DATA = (unsigned char) ((1 <<target) | (controller_type == SEAGATE ? 0x80 : 0x4
- 0));
- sti()
- ______________________________________________________________________
-
-
- may fix your problem.
-
-
- 4.12.2. Defines
-
- FAST or FAST32 will use blind transfers where possible
-
- ARBITRATE will cause the host adapter to arbitrate for the bus for
- better SCSI-II compatability, rather than just waiting for BUS FREE
- and then doing its thing. Should let us do one command per Lun when I
- integrate my reorganization changes into the distribution sources.
-
- SLOW_HANDSHAKE will allow compatability with broken devices that don't
- handshake fast enough (ie, some CD ROM's) for the Seagate code.
-
- SLOW_RATE=x, x some number will let you specify a default transfer
- rate if handshaking isn't working correctly.
-
- 4.13. PAS16 SCSI
-
-
- Supported and Unsupported Configurations:
-
- Ports:
- 0x388, 0x384, 0x38x, 0x288
-
- IRQs:
- 10, 12, 14, 15
-
- IMPORTANT:
- IRQ MUST be different from the IRQ used for the sound portion
- of the board.
-
- DMA:
- not used for the SCSI portion of the board
-
- IO:
- port mapped
-
- Autoprobe:
- does not require BIOS
-
-
- Autoprobe Override:
-
- Compile time:
- Define PAS16_OVERRIDE to be an array of port, irq tupples.
- Ie
-
-
- _____________________________________________________________
- #define PAS16_OVERRIDE {{0x388, 10}}
- _____________________________________________________________
-
-
-
- for a board at port 0x388, IRQ 10.
-
-
- kernel command line:
- pas16=port,irq
-
-
- Defines:
-
- o AUTOSENSE - if defined, REQUEST SENSE will be performed
- automatically for commands that return with a CHECK CONDITION
- status.
-
- o PSEUDO_DMA - enables PSEUDO-DMA hardware, should give a 3-4X
- performance increase compared to polled I/O.
-
- o PARITY - enable parity checking. Not supported
-
- o SCSI2 - enable support for SCSI-II tagged queueing. Untested
-
-
- o UNSAFE - leave interrupts enabled during pseudo-DMA
- transfers. You only really want to use this if you're having
- a problem with dropped characters during high speed
- communications, and even then, you're going to be better off
- twiddling with transfersize.
-
-
- o USLEEP - enable support for devices that don't disconnect.
- Untested.
-
-
- Common problems:
-
- 1. Command timeouts, aborts, etc.
-
- You should install the NCR5380 patches that I posted to the
- net some time ago, which should be integrated into some
- future alpha release. These patches fix a race condition in
- earlier NCR5380 driver cores, as well as fixing support for
- multiple devices on NCR5380 based boards.
-
- If that fails, you should disable the PSEUDO_DMA option by
- changing the # define PSEUDO_DMA line in drivers/scsi/pas16.c
- to # undef PSEUDO_DMA.
-
- Note that the later should be considered a last resort,
- because there will be a severe performance degradation.
-
-
- 4.14. Trantor T128/T128F/T228
-
-
- Supported and Unsupported Configurations:
-
- Base addresses:
- 0xcc000, 00xc8000, 0xdc000, 0xd8000
-
- IRQs:
-
- o none, 3, 5, 7 (all boards)
-
- o 10, 12, 14, 15 (T128F only)
-
- DMA:
- not used.
-
- IO:
- memory mapped
-
- Autoprobe:
- works for all supported configurations, requires installed BIOS.
-
-
- Autoprobe Override:
-
- Compile time:
- Define T128_OVERRIDE to be an array of address, irq tupples.
- Ie
-
-
- _____________________________________________________________
- #define T128_OVERRIDE {{0xcc000, 5}}
- _____________________________________________________________
-
-
-
- for a board at address 0xcc000, IRQ 5.
-
- The symbolic IRQs IRQ_NONE and IRQ_AUTO may be used.
-
-
- kernel command line:
- t128=address,irq
- -1 may be used for no irq, -2 for irq autoprobe.
-
-
- Defines:
-
- AUTOSENSE
- if defined, REQUEST SENSE will be performed automatically
- for commands that return with a CHECK CONDITION status.
-
-
- PSEUDO_DMA
- enables PSEUDO-DMA hardware, should give a 3-4X
- performance increase compared to polled I/O.
-
-
- PARITY
- enable parity checking. Not supported
-
-
- SCSI2
- enable support for SCSI-II tagged queueing. Untested
-
-
-
- UNSAFE
- leave interrupts enabled during pseudo-DMA transfers. You
- only really want to use this if you're having a problem
- with dropped characters during high speed communications,
- and even then, you're going to be better off twiddling
- with transfersize.
-
-
- USLEEP
- enable support for devices that don't disconnect.
- Untested.
-
- Common Problems:
-
- 1. Command timeouts, aborts, etc.
-
- You should install the NCR5380 patches that I posted to the
- net some time ago, which should be integrated into some
- future alpha release. These patches fix a race condition in
- earlier NCR5380 driver cores, as well as fixing support for
- multiple devices on NCR5380 based boards.
-
- If that fails, you should disable the PSEUDO_DMA option by
- changing the # define PSEUDO_DMA line in drivers/scsi/pas16.c
- to # undef PSEUDO_DMA.
-
- Note that the later should be considered a last resort,
- because there will be a severe performance degradation.
-
-
- 4.15. Ultrastor 14f (ISA), 24f (EISA), 34f (VLB)
-
-
- Supported Configurations:
-
- Ports:
- 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
-
- IRQs:
- 10, 11, 14, 15
-
-
- DMA channels:
- 5, 6, 7
-
- IO:
- port mapped, bus master
-
- Autoprobe:
- does not work for boards at port 0x310, BIOS not required.
-
-
- Autoprobe override:
- compile time only, define PORT_OVERRIDE
-
-
- Common Problems :
-
- 1. The address 0x310 is not supported by the autoprobe code, and
- may cause conflicts if networking is enabled.
-
- Please use a different address.
-
- 2. Using an Ultrastor at address 0x330 may cause the system to
- hang when the sound drivers are autoprobing.
-
- Please use a different address.
-
- 3. Various other drivers do unsafe probes at various addresses,
- if you are having problems with detection or the system is
- hanging at boot time, please try a different address.
-
- 0x340 is recommended as an address that is known to work.
-
- 4. Linux detects no SCSI devices, but detects your SCSI hard
- disk on an Ultrastor SCSI board as a normal hard disk, and
- the hard disk driver refuses to support it. Note that when
- this occurs, you will probably also get a message
-
- hd.c: ST-506 interface disk with more than 16 heads detected,
- probably due to non-standard sector translation. Giving up.
- (disk % d: cyl=% d, sect=63, head=64)
-
- If this is the case, you are running the Ultrastor board in
- WD1003 emulation mode. You have to
-
- a. Switch the ultrastor into native mode. This is the
- recommended action, since the SCSI driver can be
- significantly faster than the IDE driver, especially with
- the clustered read/write patches installed. Some users
- have sustained in excess of 2M/sec through the file system
- using these patches.
-
- Note that this will be necessary if you wish to use any
- non- hard disk, or more than two hard disk devices on the
- Ultrastor.
-
- b. Use the kernel command line switch
-
-
-
- hd=cylinders,heads,sectors
-
-
-
-
-
- to override the default setting to bootstrap yourself,
- keeping number of cylinders < = 2048, number of heads < = 16,
- and number of sectors < = 255 such that cylinders * heads *
- sectors is the same for both mappings.
-
- You'll also have to manually specify the disk geometry when
- running fdisk under Linux. Failure to do so will result in
- incorrect partition entries being written, which will work
- correctly with Linux but fail under MSDOS which looks at the
- cylinder/head/sector entries in the table.
-
- Once Linux is up, you can avoid the inconvience of having to
- boot by hand by recompiling the kernel with an appropriately
- defined HD_TYPE macro in include/linux/config.h.
-
-
- 4.16. Western Digital 7000
-
-
- Supported Configurations :
-
- BIOS Addresses:
- 0xce000
-
- Ports:
- 0x350
-
- IRQs:
- 15
-
- DMA Channels:
- 6
-
- IO:
- port mapped, bus master
-
- Autoprobe:
- requires installed BIOS
-
-
- Common Problems :
-
- 1. There are several revisisions of the chip and firmware.
- Supposedly, revision 3 boards do not work, revision 5 boards
- do, chips with no suffix do not work, chips with an 'A'
- suffix do.
-
- 2. The board supports a few BIOS addresses which aren't on the
- list of supported addresses. If you run into this situation,
- please use one of the supported addresses and submit a bug
- report as outlined in Section 2, ``Bug Reports''
-
-
- 5. Disks
-
- This section gives information that is specific to disk drives.
-
-
- 5.1. Supported and Unsupported Hardware
-
- All direct access SCSI devices with a block size of 256, 512, or 1024
- bytes should work. Other block sizes will not work (Note that this
- can often be fixed by changing the block and/or sector sizes using the
- MODE SELECT SCSI command)
-
- Sector size refers to the number of data bytes allocated per sector on
- a device, ie CDROMs use a 2048 byte sector size.
- Block size refers to the size of the logical blocks used to interface
- with the device. Although this is usually identical to sector size,
- some devices map multiple smaller physical sectors (ie, 256 bytes in
- the case of 55M Syquest drives) to larger logical blocks or vice versa
- (ie, 512 byte blocks on SUN compatable CDROM drives).
-
- Removeable media devices, including Bernoulis, flopticals, and MO
- drives work.
-
- In theory, drives up to a terrabyte in size should work. There is
- definately no problem with tiny 9G drives.
-
-
- 5.2. Common Problems
-
-
-
- 5.2.1. Cylinder > 1024 message.
-
-
- When partitioning, you get a warning message about ``cylinder > 1024''
- or you are unable to boot from a partition including a logical
- cylinder past logical cylinder 1024.
-
- This is a BIOS limitation.
-
- See Section ``'': Disk Geometry and Partitioning for a n explanation.
-
-
- 5.2.2. You are unable to partition ``/dev/hd*''
-
-
- /dev/hd* aren't SCSI devices, /dev/sd* are.
-
- See Section ``'': Device files, and Section ``'', Disk Geometry and
- Partitioning for the correct device names and partitioning procedure.
-
-
- 5.2.3. Unable to eject media from a removeable media drive.
-
-
- Linux attempts to lock the drive door when a piece of media is mounted
- to prevent filesystem corruption due to an inadvertant media change.
-
- Please unmount your disks before ejecting them.
-
-
-
- 5.2.4. Unable to boot using LILO from a SCSI disk
-
-
- In some cases, the SCSI driver and BIOS will disagree over the correct
- BIOS mapping to use, and will result in LILO hanging after 'LI' at
- boot time and/or other problems.
-
- To workarround this, you'll have to determine your BIOS geometry
- mapping used under DOS, and make an entry for your disk in
- /etc/lilo/disktab.
-
- Alternatively, you may be able to use the ``linear'' configuration
- file option.
-
-
-
-
-
- 5.2.5. Fdisk responds with
-
-
-
- You must set heads sectors and cylinders.
- You can do this from the extra functions menu.
- and disk geometry is not 'remembered' when fdisk is rerun.
-
-
-
-
- See Section ``'': Partitioning
-
-
- 5.2.6. Only one drive is detected on a bridge board with
-
- multiple drives connected.
-
- Linux won't search LUNs past zero on SCSI devices which predate ANSI
- SCSI revision 1. If you wish devices on alternate LUNs to be
- recognized, you will have to modify drivers/scsi/scsi.c:scan_scsis().
-
-
- 5.2.7. System Hangs When Swapping
-
- We think this has been fixed, try upgrading to 1.1.38.
-
-
- 5.2.8. Connor CFP1060S disks get corrupted
-
- This is due to a microcode bug in the read-ahead and caching code.
-
- >From Soenke Behrens of Conner tech. support:
-
-
-
- During the past few weeks, we got several calls from customers stating
- that they had severe problems with Conner CFP1060x 1GB SCSI drives
- using the Linux operating system. Symptoms were corrupt filesystems
- (damaged inodes) reported by e2fsck on each system boot and similar
- errors.
-
- There is now a fix available for customers with a CFP1060x (microcode
- revisions 9WA1.62/1.66/1.68) and Linux. To apply the upgrade, you
- will need a DOS boot disk and ASPI drivers that can access the hard
- drive. The upgrade downloads new queuing and lookahead code into the
- non-volatile SCSI RAM of the drive.
-
- If you are experiencing problems with a disk that has microcode
- revision 9WA1.60, you will have to contact your nearest Conner service
- centre to get the disk upgraded. The microcode revision can be found
- on the label of the drive and on the underside of the drive on a label
- on one of the ICs.
-
- If you are confident that you can perform the upgrade yourself, please
- contact Conner Technical Support and have your microcode revision
- ready. Conner Technical Support Europe can be reached on +44-1294-315333,
- Conner Technical Support in the USA can be reached on 1-800-4CONNER.
-
- Regards
- Soenke Behrens
- European Technical Support
-
-
-
-
- 5.3. Device Files
-
-
- SCSI disks use block device major 8, and there are no ``raw'' devices
- ala BSD.
-
- 16 minor numbers are allocated to each SCSI disk, with minor % 16 == 0
- being the whole disk, minors 1 < = (minor % 16) < = 4 the four prima
- ry partitions, minors 5 < = (minor % 16) < = 15 any extended
- partitions.
-
- Due to constraints imposed by Linux's use of a sixteen bit dev_t with
- only eight bits allocated to the minor number, the SCSI disk minor
- numbers are assigned dynamically starting with the lowest SCSI
- HOST/ID/LUN.
-
- Ie, a configuration may work out like this (with one host adapter)
-
- Device Target Lun SCSI disk
- 84M Seagate 0 0 /dev/sda
- SCSI-> SMD bridge disk 0 3 0 /dev/sdb
- SCSI-> SMD bridge disk 1 3 1 /dev/sdc
- Wangtek tape 4 0 none
- 213M Maxtor 6 0 /dev/sdd
- etc.
-
-
- The standard naming convention is
-
- /dev/sd{letter} for the entire disk device ((minor % 16) == 0)
- /dev/sd{letter}{partition} for the partitions on that device (1 < =
- (minor % 16) < = 15)
-
- Ie
-
- Device type major minor
- /dev/sda block 8 0
- /dev/sda1 block 8 1
- /dev/sda2 block 8 2
- /dev/sda3 block 8 3
- etc.
-
-
-
- 5.4. Partitioning
-
-
- You can partition your SCSI disks using the partitioning program of
- your choice, under DOS, OS/2, Linux or any other operating system
- supporting the standard partitioning scheme.
-
- The correct way to run the Linux fdisk program is by specifying the
- device on the command line. Ie, to partition the first SCSI disk,
-
-
- fdisk /dev/sda
-
-
-
-
- If you don't explicitly specify the device, the partitioning program
- may default to /dev/hda, which isn't a SCSI disk.
-
- In some cases, fdisk will respond with
-
-
- You must set heads sectors and cylinders.
- You can do this from the extra functions menu.
-
- Command (m for help):
-
-
-
-
- and/or give a message to the effect that the HDIO_REQ or HDIO_GETGEO
- ioctl failed. In these cases, you must manually specify the disk
- geometry as outlined in Subsection ``'': Disk Geometry when running
- fdisk, and also in /etc/disktab if you wish to boot kernels off that
- disk with LILO.
-
- If you have manually specified the disk geometry, subsequent attempts
- to run fdisk will give the same error message. This is normal, since
- PCs don't store the disk geometry information in the partition table.
- In and of itself, will cause _NO PROBLEMS_, and you will have no
- problems accessing partitions you created on the drive with Linux.
- Some vendors' poor installation code will choke on this, in which case
- you should contact your vendor and insist that they fix the code.
-
- In some cases, you will get a warning message about a partition ending
- past cylinder 1024. If you create one of these partitions, you will
- be unable to boot Linux kernels off of that partition using LILO.
- Note, however, that this restriction does not preclude the creation of
- a root partition partially or entirely above the 1024 cylinder mark,
- since it is possible to create a small /boot partition below the 1024
- cylinder mark or to boot kernels off existing partitions.
-
-
- 5.5. Disk Geometry
-
- Under Linux, each disk is viewed as the SCSI host adapter sees it : N
- blocks, numbered from 0 to N-1, all error free, where as DOS/BIOS
- predate intelligent disks and apply an arbitrary head / cylinder /
- sector mapping to this linear addressing.
-
- This can pose a problem when you partition the drives under Linux,
- since there is no portable way to get DOS/BIOS's idea of the mapped
- geometry. In most cases, a HDIO_GETGEO ioctl() can be implemented to
- return this mapping. Unfortunately, when the vendor (ie Seagate) has
- chosen a perverse, non-standard, and undocumented mapping, this is not
- possible and geometry must be manually specified
-
- If manual specification of the is required, you have one of several
- options :
-
- 1. If you don't care about using DOS, or booting kernels from the
- drive with LILO, create a translation such that heads * cylinders *
- sectors * 512 < size of your drive in bytes (a megabyte is defined
- as 2^20 bytes).
-
-
- 1 < = heads < = 256
- 1 < = cylinders < = 1024
- 1 < = sectors < = 63
-
-
-
- 2. Use the BIOS mapping. In some cases, this will mean reconfiguring
- the disk so that it is at SCSI ID 0, and disabling the second IDE
- drive (if you have one).
-
- You can either use a program like NU, or you can use the following
- program:
- ___________________________________________________________________
- begin 664 dparam.com
- MBAZ``##_B+^!`+N!`(H'0SP@=/D\,'5:@#]X=`6`/UAU4(!_`3AU2H!_`P!U
- M1(I7`H#J,(#Z`7<Y@,*`M`C-$PCD=3-14HC()#\PY.@R`.@J`%J(\/[`,.3H
- M)0#H'0!8AL2Q!M+L0.@7`+K"`;0)S2'#NIP!ZR"ZQ0'K&[K5`>L6N]T!,=*Y
- M"@#W\8#",$N(%PG`=>^)VK0)S2'#=7-A9V4Z(&1P87)A;2`P>#@P#0H@("!O
- L<B`@9'!A<F%M(#!X.#$-"B1);G9A;&ED(&1R:79E#0HD("`D```````D``!O
- `
- end
- ___________________________________________________________________
-
-
-
- When run it prints the sectors, heads, and cylinders of the drive
- whose BIOS address was specified on the command line (0x80 is the
- first disk, 0x81 the second).
-
- Ie,
-
-
- dparam 0x80
- 60 17 1007
-
-
-
-
-
- Would mean that C: had 60 sectors, 17 heads, and 1007 cylinders.
-
-
- 6. CDROMs
-
- This section gives information that is specific to cdrom drives.
-
-
- 6.1. Supported and Unsupported Hardware
-
- SCSI CDs with a block size of 512 or 2048 bytes should work. Other
- block sizes will not work.
-
-
- 6.2. Common Problems
-
- 6.2.1. Unable to mount cdrom.
-
- The correct syntax to mount an ISO-9660 CDROM is
-
-
-
- mount -t iso9660 /dev/sr0 /mount_point -o ro
-
-
-
-
- Note that for this to work, you must have the kernel configured with
- support for SCSI, your host adapter, the SCSI CDROM driver, and the
- iso9660 filesystem.
-
- Note that as of Linux 1.1.32, read-only devices such as CDROMs cannot
- be mounted with the default read/write options.
-
-
- 6.2.2. Unable to eject cdrom.
-
-
-
- Linux attempts to lock the drive door when a piece of media is mounted
- to prevent filesystem corruption due to an inadvertant media change.
-
-
- 6.2.3. Unable to play audio.
-
-
- The programs Workman or xcdplayer will do this for you.
-
-
- 6.2.4. Workman or Xcdplayer do not work.
-
-
- The functions to control audio functions are part of the SCSI-II
- command set, so any drive that is not SCSI-II will probably not work
- here. Also, many SCSI-I and some SCSI-II CDROM drives use a
- proprietary command set for accessing audio functions instead of the
- SCSI-II command set. For NEC drives, there is a version of xcdplayer
- specially adapted to use this command set floating around - try
- looking on <ftp://tsx-11.mit.edu/pub/linux/BETA/cdrom>
-
- These programs may work with some of the non-SCSI cdrom drives if the
- driver implements the same ioctls as the scsi drivers.
-
-
- 6.3. Device Files
-
-
- SCSI CDROMs use major 11.
-
- Minors are allocated dynamically (See Section 4: Disks, Subsection
- 4.3: Device Files for an example) with the first CDROM found being
- minor 0, the second minor 1, etc.
-
- The standard naming convention is
-
- /dev/sr{digit} ie
-
- /dev/sr0 /dev/sr1
-
- etc.
-
-
- 7. Tapes
-
-
- This setion gives information that is specific to scsi tape drives.
-
-
- 7.1. Supported and Unsupported Hardware
-
-
- Drives using both fixed and variable length blocks smaller than the
- the driver buffer length (set to 32K in the distribution sources) are
- supported.
-
- Parameters (block size, buffering, density) are set with ioctls
- (usually with the mt program), and remain in effect after the device
- is closed and reopened.
-
- Virtually all drives should work, including :
-
- o Archive Viper QIC drives, including the 150M and 525M models
-
- o Exabyte 8mm drives
-
- o Wangtek 5150S drives
-
- o Wangdat DAT drives
-
-
- 7.2. Common Problems
-
-
-
- 7.2.1. Tape drive not recognized at boot time.
-
-
- Try booting with a tape in the drive.
-
-
- 7.2.2. Tapes with multiple files cannot be read properly.
-
-
- When reading a tape with multiple files, the first tar is successful,
- a second tar fails silently, and retrying the second tar is
- successful.
-
- User level programs, such as tar, don't understand file marks. The
- first tar reads up until the end of the file. The second tar attempts
- to read at the file mark, gets nothing, but the tape spaces over the
- file mark. The third tar is successful since the tape is at the start
- of the next file.
-
- Use mt on the no-rewind device to space forward to the next file.
-
-
-
- 7.2.3. Decompression fails.
-
-
- Decompressing programs cannot handle the zeros padding the last block
- of the file.
-
- To prevent warnings and errors, wrap your compressed files in a .tar
- file - ie, rather than doing
-
-
-
- tar cfvz /dev/nrst0 file.1 file.2 ...
-
-
-
-
- do
-
-
-
- tar cfvz tmp.tar.z file.1 file.2 ...
-
- tar cf /dev/nrst0 tmp.tar.z
-
-
-
-
-
- 7.2.4. Problems taking tapes to/from other systems.
-
-
- You can't read a tape made with another operating system or another
- operating system can't read a tape written in Linux.
-
- Different systems often use different block sizes. On a tape device
- using a fixed blocksize, you will get errors when reading blocks
- written using a different block size.
-
- To read these tapes, you must set the blocksize of the tape driver to
- match the blocksize used when the tape was written, or to variable.
-
- Note: this is the hardware block size, not the blocking factor used
- with tar, dump, etc.
-
- You can do this with the mt command -
-
-
-
- mt setblk <size>
-
-
-
-
- or
-
-
-
- mt setblk 0
-
-
-
-
- to get variable block length support.
-
- Note that these mt flags are NOT supported under the GNU version of mt
- which is included with some Linux distributions. Instead, you must
- use the BSD derrived Linux SCSI mt command. Source should be
- available from
-
- <ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi>
-
-
- 7.2.5. ``No such device'' error message.
-
-
- All attempts to access the tape result in a
-
- ``No such device''
-
- or similar error message. Check the type of your tape device - it
- must be a character device with major and minor numbers matching those
- specified in subsection C, Device Files.
-
-
- 7.2.6. Tape reads at a given density work, writes fail
-
-
- Many tape drives support reading at lower densities for compatability
- with older harware, but will not write at those same densities.
-
- This is especially the case with QIC drives, which will read old 60M
- tapes but only write new 120, 150, 250, and 525M formats.
-
-
- 7.3. Device Files
-
-
- SCSI tapes use character device major 9.
-
-
- Due to constraints imposed by Linux's use of a sixteen bit dev_t with
- only eight bits allocated to the minor number, the SCSI tape minor
- numbers are assigned dynamically starting with the lowest SCSI
- HOST/ID/LUN.
-
- Rewinding devices are numbered from 0 - with the first SCSI tape,
- /dev/rst0 being c 9 0, the second /dev/rst1 c 9 1, etc. Non-rewinding
- devices have the high bit set in the minor number, ie /dev/nrst0 is c
- 9 128.
-
- The standard naming convention is /dev/nrst{digit} for non-rewinding
- devices /dev/rst{digit} for rewinding devices
-
-
- 8. Generic
-
-
- This information gives information that is specific to the generic
- scsi driver.
-
-
- 8.1. Supported Hardware
-
-
- The Generic SCSI device driver provides an interface for sending SCSI
- commands to all SCSI devices - disks, tapes, CDROMs, media changer
- robots, etc.
-
- Everything electrically compatable with your SCSI board should work.
-
-
- 8.2. Common Problems
-
-
- None :-).
-
-
- 8.3. Device Files
-
-
- SCSI generic devices use character major 21. Due to constraints
- imposed by Linux's use of a 16 bit dev_t, minor numbers are
- dynamically assigned from 0, one per device, with
-
- /dev/sg0
-
- corresponding to the lowest numerical target/lun on the first SCSI
- board.
-
-
- 9. Buyers' Guide
-
-
- A frequent question is:
-
- ``Linux supports quite a number of different boards, so which SCSI
- host adapter should I get.''
-
- The answer depends upon how much performance you expect or need,
- motherboard, and the scsi peripherals that you plan on attaching to
- your machine.
-
-
-
-
-
- 9.1. Transfer types
-
-
- The biggest factor affecting performance (in terms of throughput and
- interactive response time during SCSI I/O) is going to be the transfer
- type used.
-
-
-
-
- 9.1.1. Pure Polled handshaking.
-
-
- A pure polled I/O board will use the CPU to handle all of the SCSI
- processing, including the REQ/ACK
-
- Even a fast CPU will be slower handling the REQ/ACK handshake sequence
- than a simple finite state machine, resulting in peak transfer rates
- of about 150K/sec on a fast machine, perhaps 60K/sec on a slow machine
- (through the filesystem).
-
- The driver also must sit in a tight loop as long as the SCSI bus is
- busy, resulting in near 100% CPU utilitization and extremely poor
- responsiveness during SCSI/IO. Slow CDROMs which don't
- disconnect/reconnect will kill interactive performance with these
- boards.
-
- Not recommended.
-
-
- 9.1.2. Interlocked Polled handshaking
-
-
- Boards using interlocked polled I/O are essentially the same as pure
- polled I/O boards, only the SCSI REQ/ACK signals the PC bus
- handshaking signals. All SCSI processing beyond the handshaking is
- handled by the CPU.
-
- Peak transfer rates of 500-600K/sec through the filesystem re possible
- on these boards.
-
- As with pure polled I/O boards, the driver must sit in a tight loop as
- long as the SCSI bus is busy, resulting in CPU utilization dependant
- on the transfer rates of the devices, and when they
- disconnect/reconnect. CPU utilization may vary between 25% for single
- speed CDs which handle disconnect/reconnect properly to 100% for
- faster drives or broken CDROMs which fail to disconnect/reconnect.
-
- On my 486-66, with a T128, I use 90% of my CPU time to sustain a
- throughput of 547K/sec on a drive with a headrate of 1080K/sec with a
- T128 board.
-
- Sometimes acceptable for slow tapes and CDROMs when low cost is
- essential.
-
-
- 9.1.3. FIFO Polled
-
-
- Boards using FIFO polled I/O put a small (typically 8K) buffer between
- the CPU and the SCSI bus, and often implement some amount of
- intelligence. The net effect is that the CPU is only tied up when it
- is transfering data at top speed to the FIFO and when it's handling
- the rest of the interrupt processing for FIFO empty conditions,
- disconnect/reconnect, etc.
-
- Peak transfer rates should be sufficient to handle most SCSI devices,
- and have been measured at up to 4M/sec using raw SCSI commands to read
- 64K blocks on a fast Seagate Barcuda with an Adaptec 1520.
-
- CPU utilization is dependant on the transfer rates of the devices,
- with faster devices generating more interrupts per unit time which
- require more CPU processing time. Although CPU usage may be high
- (perhaps 75%) with fast devices, the system usually remains usable.
- These boards will provide excellent interactive performance with
- broken devices which don't disconnect/reconnect (typically cheap CDROM
- drives)
-
- Recommended for persons on a budget.
-
-
- 9.1.4. Slave DMA
-
-
- Drivers for boards using slave DMA program the PC's DMA controller for
- a channel when they do a data transfer, and return control to the CPU.
-
- Peak transfer rates are usually handicapped by the poor DMA controller
- used on PCs, with one such 8-bit board having problems going faster
- than 140-150K/sec with one mainboard.
-
- CPU utilization is very reasonable, slightly less than what is seen
- with FIFO polled I/O boards. These boards are very tollerant of
- broken devices which don't disconnect/reconnect (typically cheap CSG
- limit DROM drives).
-
- Acceptable for slow CDROM drives, tapes, etc.
-
-
- 9.1.5. Busmastering DMA
-
-
- These boards are intelligent. Drivers for these boards throw a SCSI
- command, the destination target and lun, and where the data should end
- upin a structure, and tell the board ``Hey, I have a command for
- you.'' The driver returns control to various running programs, and
- eventually the SCSI board gets back and says that it's done.
-
- Since the intelligence is in the host adapter firmware and not the
- driver, drivers for these boards typically support more features -
- synchronous transfers, tagged queing, etc.
-
- With the clustered read/write patches, peak transfer rates through the
- file system approach 100% of head rate writing, 75% reading.
-
- CPU utilization is minimal, irregardless of I/O load, with a measured
- 5% CPU usage while accessing a double speed CDROM on an Adaptec 1540
- and 20% while sustaining a 1.2M/sec transfer rate on a SCSI disk.
-
- Recommended in all cases where money is not extremely tight, the main
- board is not broken (some broken main boards do not work with bus
- masters), and applications where time to data is more important than
- throughput are not being run (bus master overhead may hit 3-4ms per
- command).
-
-
- 9.2. Scatter/gather
-
-
- The second most important driver/hardware feature with respect to
- performance is support for scatter/gather I/O. The overhead of
- executing a SCSI command is significant - on the order of
- milliseconds. Intelligent bus masters like the Adaptec 1540 may take
- 3-4ms to process a SCSI command before the target even sees it. On
- unbuffered devices, this overhead is allways enough to slip a
- revolution, resulting in a transfer rate of about 60K/sec (assuming a
- 3600RPM drive) per block transfered at a time. So, to maximize
- performance, it is necessary to minimize the number of SCSI commands
- needed to transfer a given amount of data by transfering more data per
- command. Due to the design of the Linux buffer cache, contiguous disk
- blocks are not contiguous in memory. With the clustered read/write
- patches, 4K worth of buffers are contiguous. So, the maximum amount
- of data which can be transfered per SCSI command is going to be 1K * #
- of scatter/gather regions without the clustered read/write patches, 4K
- * # of regions with. Experimentally, we've determined that 64K is a
- reasonable amount to transfer with a single SCSI command - meaning 64
- scatter/gather buffers with clustered read/write patches, 16 without.
- With the change from 16K to 64K transfers, we saw an improvement from
- 50% of headrate, through the filesystem, reading and writing, to 75%
- and 100% respectively using an Adaptec 1540 series board.
-
-
- 9.3. Mailbox vs. non-mailbox
-
- A number of intelligent host adapters, such as the Ultrastor, WD7000,
- Adaptec 1540, 1740, and Buslogic boards have used a mailbox-metaphor
- interface, where SCSI commands are executed by putting a SCSI command
- structure in a fixed memory location (mailbox), signaling the board
- (ie, raising the outgoing mail flag), and waiting for a return
- (incoming mail). With this high level programming interface, users
- can often upgrade to a newer board revision to take advantage of new
- features, such as FAST + WIDE SCSI, without software changes. Drivers
- tend to be simpler to implement, may implement a larger feature set,
- and may be more stable.
-
- Other intelligent host adapters, such as the NCR53c7/8xx family, and
- Adaptec AIC-7770/7870 chips (including the 274x, 284x, and 2940
- boards) use a lower level programming interface. This may prove
- faster since processing can be shifted between the board's processor
- and faster host CPU, allow better flexibility in implementing certain
- features (ie, target mode for arbitrary devices), and these boards can
- be built for less money (In some cases, this is passed on to the
- consumer (ie, most NCR boards)). On the down side, drivers tend to be
- more complex, and must be modified to take advantage of the features
- present on newer chips.
-
-
- 9.4. Bus types
-
- Bus type is the next thing to consider, with choices including ISA,
- EISA, VESA, and PCI. Marketing types often spout of absurd bandwidth
- numbers based on burst transfer rates and fiction, which isn't very
- useful. Instead, I've chosen to state ``real-world'' numbers based on
- measured performance with various peripherials.
-
-
- 9.4.1. ISA
-
- Bandwidth is slightly better than 5M/sec for busmastering devices.
- With an ISA bus, arbitration for busmasters is performed by the
- venerable 8237 third party DMA controller, resulting in relatively
- high bus aquisition times. Interrupt drivers are tri-state and edge
- triggered, meaning interrupts cannot be shared. Generally, ISA is
- unbuffered, meaning the host/memory bus is tied up whenever a transfer
- is occuring. No mechanism is provided to prevent bus-hogging.
-
-
-
- 9.4.2. VESA
-
- Bandwidth is about 30M/sec. Some VESA systems run the bus out of
- spec, rendering them incompatable with some boards, so this should be
- taken into consideration before purchasing hardware without a return
- guarantee. Generally, VESA is unbuffered, meaning meaning the
- host/memory bus is tied up whenever a transfer is occuring.
-
-
- 9.4.3. EISA
-
- Bandwidth is about 30M/sec, with busmastering operations generally
- being faster than VESA. Some EISA systems buffer the bus, allowing
- burst transfers to the faster host/memory bus and minimizing impact on
- CPU performance. EISA interrupt drivers may be either tri-state edge-
- triggered or open collector level-active, allowing interrupt sharing
- with drivers that support it. Since EISA allocates a separate address
- space for each board, it is usually less prone to resource conflicts
- than ISA or VESA.
-
-
- 9.4.4. PCI
-
- Bandwidth is about 60M/sec. Most PCI systems implement write posting
- buffers on the host bridge, allowing speed mismatches on either side
- to have a minimum impact on bus/CPU performance. PCI interrupt
- drivers are open collector level-active, allowing interrupt sharing
- with drivers that support it. Mechanisms are provided to prevent bus
- hogging, and for both master and slave to suspend a bus-mastering
- operation.
-
- Since PCI provides a plug-n-play mechanism with writeable
- configuration registers on every board, in a separate address space, a
- propperly implemented PCI system is plug-and play.
-
- PCI is extremely strict as to trace length, loading, mechanical
- specifications, etc. and ultimately should be more reliable than VESA
- or ISA.
-
- In summary, PCI is the best PC bus, although it does have its dark
- side. PCI is still in its infancy, and although most manufacturers
- have ironed out the problems, there is still stock of older, buggy PCI
- hardware and broken main BIOSes. For this reason, I _strongly_
- recommend a return guarantee on the hardware. While the latest PCI
- mainboards are truly plug-and-play, older PCI boards may require the
- user to set options with both jumpers and in software (ie, interrupt
- assignments). Although many users have resolved their PCI problems,
- it has taken time and for this reason I cannot recommend a PCI
- purchase if having the system operational is extremely time critical.
-
- For many slower SCSI devices, such as disks with head rates arround
- 2M/sec or less, CDROMs, and tapes, there will be little difference in
- throughputs with the different PC bus interfaces. For faster
- contemporary SCSI drives (Typical high end multi-gigabyte drives have
- a head rate of 4-5M/sec, and at least one company is currently ALPHA
- testing a parallel head unit with a 14M/sec head rate), throughput
- will often be significantly better with controllers on faster busses,
- with one user noting a 2.5 fold performance improvement when going
- from an Adaptec 1542 ISA board to a NCR53c810 PCI board.
-
- With the exception of situations where PCI write-posting or a similar
- write-buffering mechanism is being used, when one of the busses in
- your system is busy, all of the busses will be unaccessable. So,
- although bus saturation may not be interfering with SCSI performance,
- it may have a negative effect on interactive performance. Ie, if you
- have a 4M/sec SCSI disk under ISA, you'll have lost 80% of your
- bandwidth, and in an ISA/VESA system would only be able to bitblt at
- 6M/sec. In most cases, a similar impact on processing jobs in the
- background would also be felt.
-
- Note that having over 16M of memory does not preclude using an ISA
- busmastering SCSI board. Unlike various broken operating systems,
- Linux will double buffer when using a DMA with an ISA controller and a
- transfer is ultimately destined for an area above 16M. Performance on
- these transfers only suffers by about 1.5% , ie not noticably.
-
- Finally, the price difference between bus masters offered with the
- different bus interfaces is often minimal.
-
- With all that in mind, based on your priorities you will have certain
- bus preferences.
-
-
- Stability, time critical installations and poor return policies
- EISA ISA VESA PCI
-
-
- Performance, and typical hobbiest installations
- PCI EISA VESA ISA
-
- As I pointed out earlier, bus mastering versus other transfer modes is
- going to have a bigger impact on total system performance, and should
- be considered more important than bus type when purchasing a SCSI
- controller.
-
-
- 9.5. Multiple devices
-
- If will you have multiple devices on your SCSI bus, you may want to
- see whether the host adapter/driver that you are considering supports
- more than one outstanding command at one time. This is very important
- if you are mixing devices of different speeds, like a tape drive and a
- disk drive. If the linux driver only supports one outstanding
- command, you may be locked out of your disk drive while a tape in the
- tape drive is rewinding, for example. With two disk drives, the
- problem will not be as noticeable, allthough throughput would approach
- the average of the two transfer rates rather than the sum of the two
- transfer rates.
-
-
- 9.6. SCSI-I, SCSI-II, SCSI-III FAST and WIDE options, etc.
-
-
- Over the years, SCSI has evolved, with new revisions of the standard
- introducing higher transfer rates, methods to increase throughput,
- standardized commands for new devices, and new commands for previously
- supported devices.
-
- In and of themselves, the revision levels don't really mean anything.
- Excepting minor things like SCSI-II not allowing the single initiator
- option of SCSI-I, SCSI is backwards compatable, with new features
- being introduced as options and not mandatory. So, the descision to
- call a SCSI adapter SCSI, SCSI-II, or SCSI-III is almost entirely a
- marketing one.
-
-
- 9.7. Driver feature comparison
-
-
- Driver feature comparison (supported chips are listed in parenthesis)
-
-
- Driver Transfer mode Simultaneous Commands SG >1
- total/LUN Limit
- aha152x FIFO(8k) Polled 1s/1s 255s
- (AIC6260,
- AIC6360)
- aha1542 Busmastering DMA 8s/1s 16 Y
- aha1740 Busmastering DMA 32s 16
- aha274x Busmastering DMA 4s/1s 255s Y
- buslogic Busmastering DMA Y 64s, 8196h
- eata dma Busmastering DMA 64s/16s 64s Y
- fdomain FIFO(8k) Polled 1s 64s
- TMC1800 except TMC18c30
- TMC18c30, with 2k FIFO
- TMC18c50,
- TMC36c70
- in2000* FIFO(2k) Polled 1s 255s
- g NCR5380 Pure Polled 16s/2s 255s Y
- (NCR5380,
- NCR53c80,
- NCR5381,
- NCR53c400)
- gsi8* Slave DMA 16s/2s 255s
- (NCR5380)
- PAS16 Pure Polled or 16s/2s 255s Y
- (NCR5380) Interlocked Polled
- (fails on some systems!)
- seagate Interlocked Polled 1s 255s N
- wd7000 Busmastering DMA 8s 1
- t128 Interlocked Polled 16s 255s Y
- (NCR5380)
- ultrastor Busmastering DMA Y
- 53c7,8xx Busmastering DMA 1s/1s 255s Y
- (NCR53c810)
-
-
- Notes :
-
- 1. drivers flagged with an '*' are not included with the distribution
- kernel, and binary boot images may be unavailable.
-
- 2. numbers suffixed with an 's' are arbitrary limits set in software
- which may be changed with a compile time define.
-
- 3. hardware limits are indicated by an 'h' suffix, and may differ from
- the software limits currently imposed by the Linux drivers.
-
- 4. unsuffixed numbers may indicate either hard or soft limits.
-
-
- 9.8. Board comparison
-
-
-
- Board Driver Bus Price Notes
- Adaptec AIC-6260 aha152x ISA chip, not board
- Adaptec AIC-6360 aha152x VLB chip, not board
- (Used in most
- VESA/ISA multi-IO
- boards with SCSI,
- Zenon mainboards)
- Adaptec 1520 aha152x ISA
- Adaptec 1522 aha152x ISA $80 1520 w/FDC
- Adaptec 1510 aha152x ISA 1520 w/out boot ROM,
- won't autoprobe.
- Adaptec 1540C aha1542 ISA
-
- Adaptec 1542C aha1542 ISA 1540C w/FDC
- Adaptec 1540CF aha1542 ISA FAST SCSI-II
- Adaptec 1542CF aha1542 ISA $200 1540CF w/FDC
- Adaptec 1740 aha1740 EISA discontinued
- Adaptec 1742 aha1740 EISA discontinued, 1740
- w/FDC
- Adaptec 2740 aha274x EISA
- Adaptec 2742 aha274x EISA w/FDC
- Adaptec 2840 aha274x VLB
- Adaptec 2842 aha274x VLB w/FDC
- Always IN2000 in2000 ISA
- Buslogic 445S aha1542, VLB $250 FAST SCSI-II, active
- buslogic termination, w/FDC
- Buslogic 747S aha1542 EISA FAST SCSI-II, active
- buslogic termination, w/FDC
- Buslogic 946S buslogic PCI FAST SCSI-II, active
- termination.
- DPT PM2011 eata dma ISA FAST SCSI-II
- DPT PM2012A eata dma EISA FAST SCSI-II
- DPT PM2012B eata dma EISA FAST SCSI-II
- DPT PM2021 eata dma ISA $245 FAST SCSI-II
- DPT PM2022 eata dma EISA $449 FAST SCSI-II
- active termination
- DPT PM2024 eata dma PCI $395 FAST SCSI-II
- active termination
- DPT PM2122 eata dma EISA $595 FAST SCSI-II
- active termination
- DPT PM2124 eata dma PCI $595 FAST SCSI-II
- active termination
- DPT PM2322 eata dma EISA FAST SCSI-II
- active termination
- DPT PM3021 eata dma ISA $1595 FAST SCSI-II
- multichannel
- raid/simm sockets
- active termination
- DPT PM3122 eata dma EISA $1795 FAST SCSI-II
- multichannel/raid
- active termination
-
-
-
-
- DPT PM3222 eata dma EISA $1795 FAST SCSI-II
- multichannel
- raid/simm sockets
- active termination
- DPT PM3224 eata dma PCI $1995 FAST SCSI-II
- multichannel
- raid/simm sockets
- active termination
- DPT DTC 3 aha1542 EISA Although it should work,
- due to documentation
- release polcies, DTC
- hardware is unsupported
- DTC 3292 aha1542 EISA 3290 w/FDC
- DTC 3292 aha1542 EISA 3290 w/FDC
- Future Domain 1680 fdomain ISA FDC
- Future Domain 3260 fdomain PCI
- NCR53c810 (boards sold 53c7,8xx PCI $70 +chip, not board. Boards
- by FIC, Chaintech, (board) don't include
- Nextor, Gigabyte, etc. BIOS, although most
- Mainboards with chip by non-NCR equipped main
- AMI, ASUS, J-Bond, boards have the SDMS
- etc. Common in DEC BIOS
- PCI systems)
-
- NCR53c815 ( 53c7,8xx PCI $115 NCR53c810 plus
- Intel PCISCSIKIT, bios
- NCR8150S, etc)
- NCR53c825 53c7,8xx PCI Wide variant of
- NCR53c815. Note that
- the current Linux
- driver does not
- negotiate for wide
- transfers.
- Pro Audio Spectrum 16 pas16 ISA Sound board w/SCSI
- Seagate ST01 seagate ISA $20 IOS only works with
- some drives
- Seagate ST02 seagate ISA $40 ST01 w/FDC
- Sound Blaster 16 SCSI aha152x ISA Sound board w/SCSI
- Western Digital 7000 wd7000 ISA w/FDC
- Trantor T128 t128 ISA
- Trantor T128F t128 ISA T128 w/FDC and
- support for high IRQs
- Trantor T130B g NCR5380 ISA
- Ultrastor 14F ultrastor ISA w/FDC
- Ultrastor 24F ultrastor EISA w/FDC
- Ultrastor 34F ultrastor VLB
-
-
- Notes:
-
- 1. Trantor was recently purchased by Adaptec, and some products are
- being sold under the Adaptec name.
-
- 2. Ultrastor recently filed for Chapter 11 Bankruptcy, so technical
- support is non-existant at this time.
-
- 3. Various Buslogic boards other than the 545S, 445S, 747S, and 946S
- _should_ work, although to my knowledge have not been tried.
-
- 4. The $70 price for the busmastering NCR53c810 boards is not a typo,
- includes the standard ASPI/CAM driver package for DOS, OS/2 and
- Windows (32 bit access), and other drivers are available for free
- download.
-
- If you can't find one at that price, try Technoland at
- 1-800-292-4500 or 1-408-992-0888 if you live in California,
- InteliSys at (703)385-0347, Superpower 1 (800) 736-0007, SW
- (swt@netcom.com) 214-907-0871 fax 214-907-9339
-
- Insight Electronics at 1-609-985-5556 stocks NCR8150S '815 boards
- for $115 if you don't have a NCR SDMS BIOS in your main ROM.
-
- 5. Adaptec's recent SCSI chips show an unusual sensitivity to cabling
- and termination problems. For this reason, I cannot recommend the
- Adaptec 154x C and CF revisions or the 2xxx series.
-
- Note that the reliability problems do not apply to the older 154x B
- revision boards, 174x A revision boards, or to my knowledge
- AIC-6360/AIC-6260 based boards.
-
- Also, the quality of their technical support has slipped markedly,
- with long delays becoming more common, and their employees being
- ignorant (suggesting there were non-disclosure policies affecting
- certain literature when there were none), and hostile (ie, refusing
- to pass questions on to some one else when they couldn't answer
- them).
-
- If users desire handholding, or wish to make a political statement,
- they should take this point into consideration. Otherwise, the
- Adaptec 152x/1510 are nicer than the other ISA boards in the same
- price range, and there are some excellent deals on used and surplus
- 154x B revision boards and 1742 boards which IMHO outweigh the
- support problems.
-
- 6. All given prices for the DPT controllers are official list prices.
- Street prices should be considerably lower. All boards can be
- upgraded with chache and raid modules, most of the boards are also
- available in Wide and/or Differential versions.
-
-
- 9.9. Summary
-
- Most ISA, EISA, and VESA users will probably be served best by a
- Buslogic board, due to its performance, features such as active
- termination, and Adaptec 1540 compatability. There are a number of
- models available with EISA, ISA, PCI, and VESA local bus interfaces,
- in single ended and differential, and 8/16 bit SCSI bus widths.
-
- People with PCI systems should consider NCR53c810 based boards. These
- are bus mastering SCSI controllers, available in Q1 for about $70 (ie,
- cheaper than the Adaptec 1520) with larger quantities being cheaper
- (I've seen $62 in Q20). In addition to being the cheapest PCI SCSI
- boards, the NCR boards were also benchmarked as faster than the
- Adaptec 2940 and Buslogic BT-946, and demonstrate excellent
- performance under Linux (up to 4M/sec through the file system )
- inspite of the performance optomizations being disabled in the current
- driver. The disadvantages of these boards versus the Buslogics are
- that they aren't Adaptec 1540 compatable, don't come with active
- termination, and to my knowledge are only supported under DOS+Windows,
- OS/2, Windows NT, SCO, NeXTstep, and Free BSD. Currently, the Linux
- driver appears quite stable on most systems (We've moved several
- gigabytes of data to NCR based devices with no problems), surprisingly
- fast (I've seen 4M/sec through the filesystem) and will eventually
- become more featureful. On the downside, the current Linux driver
- implementation doesn't support disconnect/reconnect, so you will be
- unable to access your SCSI disks if rewinding,retensioning,etc. SCSI
- tapes at the same time.
-
- People wanting non-PCI SCSI on a limited budget will probably be
- happiest finding a surplus or used Adaptec 154x B revision or 174x A
- revision, or an Adaptec 1520 clone of some sort (about $80) if they
- want new hardware. These boards offer reasonable throughput and
- interactive performance at a modest price.
-